Wavelet-tree-based coding techniques are widely used in existing image encoding/decoding devices, i.e., CODECs, because of the excellent energy-compacting capability and high flexibility in terms of scalability in resolution and distortion. A common feature of such algorithms is to exploit the wavelet tree structure to build dependencies between wavelet coefficients so as to effectively encode the coefficients. For example, an embedded zero-tree wavelet (EZW) algorithm and a set partitioning in hierarchical trees (SPIHT) algorithm are well known representations of such techniques. These exemplary algorithms provide competitive rate-distortion performance with an image compression standard and coding system, e.g., the JPEG2000 standard, but operate with lower system complexity.
A common problem encountered when implementing the wavelet-tree-based algorithms is the large memory consumption from both the wavelet transform and the coding algorithms themselves. The straightforward implementation of two dimensional (2-D) discrete wavelet transform (DWT) must hold the complete image in its buffer. In applications, such as remote sensing and medical imaging, where the image size can be very large, it is very hard to implement the DWT in the hardware. Besides wavelet transform, most wavelet-tree-based coding algorithms themselves require significant memory to store temporary data. The coding procedure requires multiple scans of the same wavelet tree as the algorithm passes through different quantization steps. As a result, these algorithms must retain all the data required to complete these repeated scans and therefore require large amounts of memory.